struct _DMA_IOMMU_INTERFACE// Size=0x70
{
    unsigned long Version;// Offset=0x0 Size=0x4
    long  ( * CreateDomain)(unsigned char ,struct _IOMMU_DMA_DOMAIN ** );// Offset=0x8 Size=0x8
    long  ( * DeleteDomain)(struct _IOMMU_DMA_DOMAIN * );// Offset=0x10 Size=0x8
    long  ( * AttachDevice)(struct _IOMMU_DMA_DOMAIN * ,struct _DEVICE_OBJECT * ,unsigned long ,unsigned long );// Offset=0x18 Size=0x8
    long  ( * DetachDevice)(struct _IOMMU_DMA_DOMAIN * ,struct _DEVICE_OBJECT * ,unsigned long );// Offset=0x20 Size=0x8
    long  ( * FlushDomain)(struct _IOMMU_DMA_DOMAIN * );// Offset=0x28 Size=0x8
    long  ( * FlushDomainByVaList)(struct _IOMMU_DMA_DOMAIN * ,unsigned char ,unsigned long ,void * );// Offset=0x30 Size=0x8
    long  ( * QueryInputMappings)(struct _DEVICE_OBJECT * ,struct _INPUT_MAPPING_ELEMENT * ,unsigned long ,unsigned long * );// Offset=0x38 Size=0x8
    long  ( * MapLogicalRange)(struct _IOMMU_DMA_DOMAIN * ,unsigned long ,struct _MDL * ,unsigned long long );// Offset=0x40 Size=0x8
    long  ( * UnmapLogicalRange)(struct _IOMMU_DMA_DOMAIN * ,unsigned long long ,unsigned long long );// Offset=0x48 Size=0x8
    long  ( * MapIdentityRange)(struct _IOMMU_DMA_DOMAIN * ,unsigned long ,struct _MDL * );// Offset=0x50 Size=0x8
    long  ( * UnmapIdentityRange)(struct _IOMMU_DMA_DOMAIN * ,struct _MDL * );// Offset=0x58 Size=0x8
    long  ( * SetDeviceFaultReporting)(struct _DEVICE_OBJECT * ,unsigned long ,unsigned char ,struct _DEVICE_FAULT_CONFIGURATION * );// Offset=0x60 Size=0x8
    long  ( * ConfigureDomain)(struct _IOMMU_DMA_DOMAIN * ,struct _DOMAIN_CONFIGURATION * );// Offset=0x68 Size=0x8
};